﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Etna.Exportaciones.Rn;
using Etna.Exportaciones.En;

namespace WebExportaciones
{
    public partial class frmLista_Producto : System.Web.UI.Page
    {
   protected List<EnProducto> loEnProducto;
   private int iPaginaActual;
   private int iTotalPaginas;
   private int iPaginaInicial;
   private bool bDirectoPagina;

   protected void Page_Load(object sender, EventArgs e)
   {
      if (!Page.IsPostBack)
      {
         RnProducto oRnProducto = new RnProducto();
         loEnProducto = oRnProducto.Listar(0);
         hdfPaginaActual.Value = "0";
         Session["ContenidoGrillaProducto"] = loEnProducto;
         EnlazarGridView();
      }
      else
      {
         loEnProducto = (List<EnProducto>)Session["ContenidoGrillaProducto"];
      }
   }

   protected void EventoTecladoTxtPagina(object sender, EventArgs e)
   {
      bDirectoPagina = true;
      TextBox oTextBox = (TextBox)sender;
      PaginarPorNumero(oTextBox);
   }

   protected void EventoTecladoTxtBuscar(object sender, EventArgs e)
   {
      TextBox oTextBox = (TextBox)sender;
      Buscar(oTextBox);
   }

   protected void AccionBuscar(object sender, EventArgs e)
   {
       if (sender.GetType() == txtFiltro.GetType())
       {
           TextBox txt = (TextBox)sender;

           string var = txt.Text.ToString().ToUpperInvariant();
           //Manu
           loEnProducto = (List<EnProducto>)Session["ContenidoGrillaProducto"];
           Session["ContenidoGrillaProducto"] = loEnProducto.FindAll(x => x.sDescripcion.ToUpperInvariant().Contains(var));

           gvProducto.PageIndex = 0;
           EnlazarGridView();


       }
      //if (bDirectoPagina == false)
      //{
      //   Buscar(txtFiltro);
      //   if (sender.GetType() == txtFiltro.GetType())
      //   {
      //      txtFiltro.Focus();
      //   }
      //}
      //else
      //{
      //   bDirectoPagina = false;
      //}
   }
   protected void AccionNuevo(object sender, EventArgs e)
   {
      InsertarDatos();
   }

   protected void Ordenar(object sender, GridViewSortEventArgs e)
   {

   }

   protected void Paginar(object sender, EventArgs e)
   {
      Button btnLlamada = (Button)sender;
      PaginarPorBoton(btnLlamada);
   }

   protected void AccionEliminar(object sender, EventArgs e)
   {

   }

   void PaginarPorNumero(TextBox poTextBox)
   {
      int iNuevoNumeroPagina;
      int iTotalPaginas;
      lblMensajeError.Text = "";

      int.TryParse(lblTotalPaginas.Text, out iTotalPaginas);


      if (poTextBox.Text.Trim().Length > 0)
      {
         if (int.TryParse(poTextBox.Text.Trim(), out iNuevoNumeroPagina))
         {
            if ((iNuevoNumeroPagina > 0) && (iNuevoNumeroPagina <= iTotalPaginas))
            {
               gvProducto.PageIndex = iNuevoNumeroPagina - 1;
               hdfPaginaActual.Value = (iNuevoNumeroPagina - 1).ToString();
            }
            else
            {
               lblMensajeError.Text = "El valor ingresado está fuera del rango de páginas permitido. Por favor revisar.";
               poTextBox.Focus();
            }
         }
         else
         {
            lblMensajeError.Text = "El valor ingresado debe ser numérico. Por favor revisar.";
            poTextBox.Focus();
         }
      }
      EnlazarGridView();
   }

   void PaginarPorBoton(Button pbtnLlamada)
   {
      loEnProducto = (List<EnProducto>)Session["ContenidoGrillaProducto"];
      string sParametro;
      int iPaginaNueva = 0;

      sParametro = pbtnLlamada.CommandArgument;
      switch (sParametro)
      {
         case "-2":
            // opción Primero
            iPaginaNueva = 0;
            break;
         case "-1":
            // opción Anterior
            iPaginaNueva = int.Parse(hdfPaginaActual.Value) - 1;
            if (iPaginaNueva < 0)
            {
               iPaginaNueva = 0;
            }
            break;
         case "+1":
            // opción siguiente
            iPaginaNueva = int.Parse(hdfPaginaActual.Value) + 1;
            if (iPaginaNueva >= int.Parse(lblTotalPaginas.Text))
            {
               iPaginaNueva = int.Parse(lblTotalPaginas.Text) - 1;
            }
            break;
         case "+2":
            // opción último
            iPaginaNueva = int.Parse(lblTotalPaginas.Text) - 1;
            break;
         default:
            if (!int.TryParse(sParametro, out iPaginaNueva))
            {
               iPaginaNueva = int.Parse(hdfPaginaActual.Value);
            }
            break;
      }

      if (iPaginaNueva >= 0)
      {
         gvProducto.PageIndex = iPaginaNueva;
         hdfPaginaActual.Value = iPaginaNueva.ToString();
      }
      hdfPaginaActual.Value = iPaginaNueva.ToString();
      EnlazarGridView();
   }

   void Buscar(TextBox poTextBox)
   {
      int valor;
      lblMensajeError.Text = "";

      if (int.TryParse(poTextBox.Text, out valor))
      {
         CargarGrillaDesdeBD(valor);
      }
      else
      {
         if (poTextBox.Text.Trim().Length == 0)
         {
            valor = 0;
            CargarGrillaDesdeBD(valor);
         }
         else
         {
            lblMensajeError.Text = "El valor ingresado debe ser numérico. Por favor revisar.";
            poTextBox.Focus();
         }
      }
   }

   void CargarGrillaDesdeBD(int valor)
   {
      RnProducto oRnProducto = new RnProducto();
      loEnProducto = oRnProducto.Listar(valor);
      hdfPaginaActual.Value = "0";
      Session["ContenidoGrillaProducto"] = loEnProducto;
      gvProducto.PageIndex = 0;
      EnlazarGridView();
   }

   private void CierraVentana(string psValor)
   {
       string sComando = string.Format("if (window.opener){1}window.opener.returnValue = '{0}';{2} window.returnValue='{0}'; window.close();", psValor, "{", "}");
       ClientScript.RegisterStartupScript(Page.GetType(), "Salida", sComando, true);
   }

   private void EnlazarGridView()
   {
      int iPosicion;

      if (loEnProducto != null)
      {
      gvProducto.DataSource = loEnProducto;
      gvProducto.DataBind();

      iPaginaActual = int.Parse(hdfPaginaActual.Value);
      iTotalPaginas = gvProducto.PageCount;
      iPaginaInicial = (int)Math.Floor((double)(iPaginaActual / 5)) * 5;
      iPosicion = iPaginaActual - iPaginaInicial;
         lblTotalRegistros.Text = loEnProducto.Count.ToString();
      }
      else
      {
         iPaginaActual = 0;
         iTotalPaginas = 0;
         iPaginaInicial = 0;
         iPosicion = 0;
lblTotalRegistros.Text = "0";
      }

      lblTotalPaginas.Text = iTotalPaginas.ToString();

      // Boton 1
      if (iPaginaInicial + 1 > iTotalPaginas)
      {
         btnPagina1.Visible = false;
      }
      else
      {
         btnPagina1.Visible = true;
         btnPagina1.Text = (iPaginaInicial + 1).ToString();
         btnPagina1.CommandArgument = iPaginaInicial.ToString();
         if (iPosicion == 0)
         {
            btnPagina1.ForeColor = System.Drawing.Color.White;
            btnPagina1.BackColor = System.Drawing.ColorTranslator.FromHtml("#FF6600");
         }
         else
         {
            btnPagina1.ForeColor = System.Drawing.ColorTranslator.FromHtml("#FF6600");
            btnPagina1.BackColor = System.Drawing.Color.White;
         }
      }
      // Boton 2
      if (iPaginaInicial + 2 > iTotalPaginas)
      {
         btnPagina2.Visible = false;
      }
      else
      {
         btnPagina2.Visible = true;
         btnPagina2.Text = (iPaginaInicial + 2).ToString();
         btnPagina2.CommandArgument = (iPaginaInicial + 1).ToString();
         if (iPosicion == 1)
         {
            btnPagina2.ForeColor = System.Drawing.Color.White;
            btnPagina2.BackColor = System.Drawing.ColorTranslator.FromHtml("#FF6600");
         }
         else
         {
            btnPagina2.ForeColor = System.Drawing.ColorTranslator.FromHtml("#FF6600");
            btnPagina2.BackColor = System.Drawing.Color.White;
         }
      }
      // Boton 3
      if (iPaginaInicial + 3 > iTotalPaginas)
      {
         btnPagina3.Visible = false;
      }
      else
      {
         btnPagina3.Visible = true;
         btnPagina3.Text = (iPaginaInicial + 3).ToString();
         btnPagina3.CommandArgument = (iPaginaInicial + 2).ToString();
         if (iPosicion == 2)
         {
            btnPagina3.ForeColor = System.Drawing.Color.White;
            btnPagina3.BackColor = System.Drawing.ColorTranslator.FromHtml("#FF6600");
         }
         else
         {
            btnPagina3.ForeColor = System.Drawing.ColorTranslator.FromHtml("#FF6600");
            btnPagina3.BackColor = System.Drawing.Color.White;
         }
      }
      // Boton 4
      if (iPaginaInicial + 4 > iTotalPaginas)
      {
         btnPagina4.Visible = false;
      }
      else
      {
         btnPagina4.Visible = true;
         btnPagina4.Text = (iPaginaInicial + 4).ToString();
         btnPagina4.CommandArgument = (iPaginaInicial + 3).ToString();
         if (iPosicion == 3)
         {
            btnPagina4.ForeColor = System.Drawing.Color.White;
            btnPagina4.BackColor = System.Drawing.ColorTranslator.FromHtml("#FF6600");
         }
         else
         {
            btnPagina4.ForeColor = System.Drawing.ColorTranslator.FromHtml("#FF6600");
            btnPagina4.BackColor = System.Drawing.Color.White;
         }
      }
      // Boton 5
      if (iPaginaInicial + 5 > iTotalPaginas)
      {
         btnPagina5.Visible = false;
      }
      else
      {
         btnPagina5.Visible = true;
         btnPagina5.Text = (iPaginaInicial + 5).ToString();
         btnPagina5.CommandArgument = (iPaginaInicial + 4).ToString();
         if (iPosicion == 4)
         {
            btnPagina5.ForeColor = System.Drawing.Color.White;
            btnPagina5.BackColor = System.Drawing.ColorTranslator.FromHtml("#FF6600");
         }
         else
         {
            btnPagina5.ForeColor = System.Drawing.ColorTranslator.FromHtml("#FF6600");
            btnPagina5.BackColor = System.Drawing.Color.White;
         }
      }
   }

   protected void gvProducto_RowCommand(object sender, GridViewCommandEventArgs e)
   {
      if (e.CommandName == "Select")
      {
         int indice = int.Parse(e.CommandArgument.ToString());
         string Comando;
         EnlazarGridView();
         Comando = string.Format("VerMantenimiento('Mod','{0}');", ((GridView)sender).Rows[indice].Cells[1].Text);
         ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Modificar", Comando, true);
      }
   }

   private void InsertarDatos()
   {
      string Comando;
      EnlazarGridView();
      Comando = "VerMantenimiento('Ins','0');";
      ScriptManager.RegisterStartupScript(Page, Page.GetType(), "Insertar", Comando, true);
   }

   protected void gvProducto_SelectedIndexChanged(object sender, EventArgs e)
   {
       Session["IdProducto"] = int.Parse(gvProducto.DataKeys[gvProducto.SelectedIndex].Value.ToString());
       string str_java = @"<script language='javascript'>                            
                          parent.document.getElementById('bntBuscar').click;                 
                           window.close();
                       </script>";

       ScriptManager.RegisterStartupScript(this, typeof(Page), "cerrarpagina", str_java, false);
   }
}}
